---
Checks: >
  clang-diagnostic-*,
  clang-analyzer-*,
  cppcoreguidelines-*,
  modernize-*,
  readability-*,
  bugprone-*,
  performance-*,
  -modernize-use-trailing-return-type,
  -cppcoreguidelines-avoid-magic-numbers,
  -readability-magic-numbers,
  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-special-member-functions,
  -readability-convert-member-functions-to-static,
  -bugprone-easily-swappable-parameters

# All enabled checks are treated as errors — CI fails on any violation.
WarningsAsErrors: '*'

# Only report diagnostics originating from production headers.
HeaderFilterRegex: 'src/rvc/.*'

FormatStyle: 'file'

CheckOptions:
  # ── Type / Struct naming ───────────────────────────────────────────────────
  - { key: readability-identifier-naming.ClassCase,              value: CamelCase  }
  - { key: readability-identifier-naming.StructCase,             value: CamelCase  }

  # ── Enum naming ───────────────────────────────────────────────────────────
  - { key: readability-identifier-naming.EnumCase,               value: CamelCase  }
  # Enum constants: FRONT, LEFT, IDLE, CLEANING … → UPPER_CASE
  - { key: readability-identifier-naming.EnumConstantCase,       value: UPPER_CASE }

  # ── Function / Method naming ──────────────────────────────────────────────
  - { key: readability-identifier-naming.MethodCase,             value: camelBack  }
  - { key: readability-identifier-naming.FunctionCase,           value: camelBack  }

  # ── Variable naming ───────────────────────────────────────────────────────
  - { key: readability-identifier-naming.ParameterCase,          value: camelBack  }
  - { key: readability-identifier-naming.LocalVariableCase,      value: camelBack  }

  # ── Member naming: camelCase with trailing _ ──────────────────────────────
  - { key: readability-identifier-naming.PrivateMemberCase,      value: camelBack  }
  - { key: readability-identifier-naming.PrivateMemberSuffix,    value: '_'        }

  # ── Static constexpr constants: kCamelCase ────────────────────────────────
  # e.g. kErrorThreshold, kDustThreshold
  - { key: readability-identifier-naming.StaticConstantCase,     value: CamelCase  }
  - { key: readability-identifier-naming.StaticConstantPrefix,   value: 'k'        }
